// 这里放表单生成工具额外加入的逻辑
import _ from 'loadsh'
export default {
  data() {
    return {
      currentEditIndex: '', // 记录当前右侧正在编辑的表单项下标
    }
  },
  mounted() {
    this.$EventBus.$on('setCurrentEditIndex', this.setCurrentEditIndex)
    this.initAuto()
  },
  methods: {
    initAuto() {
      // debounce
      // throttle
      this.applySubmit = _.throttle(
        () => {
          this.$EventBus.$emit('applySubmitCommonParams')
        },
        1000,
        { trailing: false }
      )
      this.showDragErr = _.throttle(
        () => {
          this.$message.error('拖拽失败：右侧操作还未保存')
        },
        1000,
        { trailing: false }
      )
    },
    // 点击单项表单元素事件
    clickItemAuto(item, index) {
      // this.currentEditIndex = index
      this.$EventBus.$emit('clickItemAuto', { item, index })
    },
    setCurrentEditIndex({ index }) {
      this.currentEditIndex = index
    },
    // 自定义控制那些元素可以拖拽
    onMove() {
      if (this.currentEditIndex !== '') {
        // 主动请求校验right表单字段，并触发right表单字段回填到main模块，若通过校验并清空currentEditIndex
        this.applySubmit()
      }
      if (this.currentEditIndex !== '') {
        // 主动请求校验right表单字段，并触发right表单字段回填到main模块，并清空currentItemIndex
        this.showDragErr()
        return false
      } else {
        return true
      }
    },
    // 拖拽完成时的事件
    dragEnd(e) {
      this.$EventBus.$emit('dragEnd')
    },
  },
}
